@哈哈鱼
2年前 提问
1个回答

什么是 crc 校验

帅末
2年前
官方采纳

CRC全称Cyclic Redundancy Check即循环冗余校核,是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法,主要用来检测或校核数据传输或者保存后可能出现的错误。CRC利用除法及余数的原理,实现错误侦测的功能,具有原理清晰、实现简单等优点。循环冗余校验码是利用软件进行校验的算法,因此其检验速度很快,校验的误码率也较低,整个计算机网络通信的信息传输速度很高。

CRC算法校验步骤如下:

  1. CRC校验采用多项式的编码方法,设要发送的数据码有k位,则该数据码对应的多项式F(x)有k项,k的取值只能为0或1;

  2. G(x)为发送端和接收端预先约好的生成多项式。G(x)的选取对校验效果起着关键的作用,使用较多的生成多项式G(x)有CRC-16、CRC-CCITT、CRC-32等;

  3. R(x)为生成的r阶冗余码多项式,R(x)的项数比G(x)要少一项。R(x)的计算方法为以F(x)作为被除数,先将F(x)乘x′即左移r位,再以G(x)作为除数作模2运算。

  4. CRC校验算法中,一帧数据有n=k+r位,前k位为数据码,后r位为冗余码。由步骤三计算出R(x)后,把R(x)附在F(x)后面形成要传送的CRC数据,其格式为[F(x),R(x)]。

  5. 接收端接收到的数据F′(x)根据模2除法对G(x)进行检验。

  6. 若F′(x)modG(x)结果为0,表明数据在传送过程中无差错,接收端就接收该数据;若F′(x)modG(x)结果不为0,则表明数据传送有错误,接收端丢弃该数据。